#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include<cstring>

using namespace std;

typedef long long LL;

const int N = 5010;

LL f[N];
int t[N], c[N];

int main()
{
    int n, s;
    scanf("%d%d", &n, &s);

    for (int i = 1; i <= n; i++)
    {
        cin >> t[i] >> c[i];
        t[i] += t[i - 1];
        c[i] += c[i - 1];
    }

    memset(f, 0x3f, sizeof f);
    f[0] = 0;
    for (int i = 1; i <= n; i++)
        for (int j = 0; j < i; j++)
            f[i] = min(f[i], f[j] + (LL)t[i] * (c[i] - c[j]) + (LL)s * (c[n] - c[j]));

    printf("%lld\n", f[n]);
    return 0;
}

//#include<iostream>
//#include<cstring>
//
//using namespace std;
//
//const int N = 300010;
//
//typedef long long LL;
//
//int n, s;
//LL t[N], c[N];
//LL f[N];
//int q[N];
//
//int main()
//{
//    scanf("%d%d", &n, &s);
//    for (int i = 1; i <= n; i++)
//    {
//        scanf("%lld%lld", &t[i], &c[i]);
//        t[i] += t[i - 1];
//        c[i] += c[i - 1];
//    }
//
//    int hh = 0, tt = 0;
//    for (int i = 1; i <= n; i++)
//    {
//        while (hh < tt && (f[q[hh + 1]] - f[q[hh]] <= (t[i] + s) * (c[q[hh + 1]] - c[q[hh]]))) hh++;
//        int j = q[hh];
//        f[i] = f[j] - (t[i] + s) * c[j] + t[i] * c[i] + s * c[n];
//        while (hh < tt && (__int128)(f[q[tt]] - f[q[tt - 1]]) * (c[i] - c[q[tt - 1]]) >= (__int128)(f[i] - f[q[tt - 1]]) * (c[q[tt]] - c[q[tt - 1]])) tt--;
//        q[++tt] = i;
//    }
//
//    printf("%lld", f[n]);
//    return 0;
//}